package done.easy_701_800;

import lombok.extern.slf4j.Slf4j;
import org.junit.Test;

import java.util.stream.Stream;

/**
 * 771. Jewels and Stones 宝石与石头
 * <p>
 * 给定字符串J 代表石头中宝石的类型，和字符串 S代表你拥有的石头。
 * S 中每个字符代表了一种你拥有的石头的类型，你想知道你拥有的石头
 * 中有多少是宝石。J 中的字母不重复，J 和 S中的所有字符都是字母。
 * 字母区分大小写，因此"a"和"A"是不同类型的石头。
 * <p>
 * 示例 1:
 * 输入: J = "aA", S = "aAAbbbb"
 * 输出: 3
 * 示例 2:
 * 输入: J = "z", S = "ZZ"
 * 输出: 0
 *
 * @author 大硕
 * 2019-04-02 9:57 PM
 **/
@Slf4j
public class JewelsAndStones {

    @SuppressWarnings("all")
    public int numJewelsInStones(String J, String S) {
        // 190402 first
//        return -1;
        return Stream.of(
                S.split("")
        ).map(
                c -> J.contains(c) ? 1 : 0
        ).reduce(
                (a, b) -> a + b
        ).get();
    }

    @Test
    public void test() {
        String J = "aZ";
        String S = "acljk;lZlaksjfzlajsfalk;AalkjZ";
        log.info("{}", numJewelsInStones(J, S));
    }
}




























/*
public int numJewelsInStones(String J, String S) {
    return Stream.of(
            S.split("")
    ).map(
            c -> J.contains(c)?1:0
    ).reduce(
            (a, b) -> a + b
    ).get();
}
*/
